package com.niu.controller;

import com.niu.dto.EmpDto;
import com.niu.pojo.Emp;
import com.niu.pojo.MyResult;
import com.niu.pojo.PageBean;
import com.niu.service.EmpService;
import com.niu.utils.MyThreadLocalUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.Map;

/**
 * 员工管理Controller
 */
@RestController
@RequestMapping("/emps")
public class EmpController {

    @Autowired
    private EmpService empService;

    // 根据id 查询员工
    @GetMapping("/{id}")
    public MyResult<Emp> getById(@PathVariable Integer id) {
        Emp emp = empService.getById(id);
        return emp != null ? MyResult.ok(emp) : MyResult.error("没有 id为" + id + " 的员工信息");
    }

    // 分页查询带条件
    @GetMapping
    public MyResult<PageBean<Emp>> getPage(EmpDto empDto) {
        PageBean<Emp> pageBean = empService.getPage(empDto);
        // 在同一个请求的任意位置都可以获取数据
         /*Map<String, Object> value = MyThreadLocalUtils.getValue();
        System.out.println(value + "_______________________________________________________________获取的map");*/
        return pageBean == null || pageBean.getRows().size() == 0 ? MyResult.error("第 " + empDto.getPage() + " 页无数据") : MyResult.ok(pageBean);
    }

    // 批量删除员工
    @DeleteMapping("/{ids}")
    public MyResult<Object> deleteByIds(@PathVariable Integer[] ids) {
        int i = empService.deleteByIds(ids);
        return i > 0 ? MyResult.ok("删除了 " + i + " 个数据") : MyResult.error("id: " + Arrays.toString(ids) + " 中, 数据有误");
    }

    // 添加员工
    @PostMapping
    public MyResult<Object> saveEmp(@RequestBody Emp emp) {
        int i = empService.insertEmp(emp);
        return i > 0 ? MyResult.ok(emp + " 添加成功") : MyResult.error(emp + " 添加失败");
    }

    // 修改员工
    @PutMapping
    public MyResult<Object> updateEmp(@RequestBody Emp emp) {
        int i = empService.updateEmp(emp);
        return i > 0 ? MyResult.ok(emp + " 更新成功") : MyResult.error(emp + " 更新失败");
    }


}
